package com.ssyt.yt1.day8;

class Car {

	public void printName() {
		System.out.println("Car...");
	}
}

class Benz extends Car {

	@Override
	public void printName() {
		System.out.println("Benz...");
	}

	public void printPrice() {
		System.out.println(999999.);
	}
}

/**
 * 多态的向上转型和向下转型！
 * 
 * @author Administrator
 *
 */
public class PolymorphismDemo3 {

	public static void main(String[] args) {
		// Car car = new Car();
		// 向上转型
		Car car = new Benz();
		// 参考的父类的结构，实际调用的是子类的实现逻辑
		// car.printName();
		// 向下转型（强转）
		Benz benz = (Benz) car;
		benz.printPrice();

		// 如果要做向下转型（强转），必须之前有向上转型
		// 注：在下向转型之前一定要用instanceof先判断，否则容易出现ClassCastException!
		Car car2 = new Car();
		if (car2 instanceof Benz) {
			Benz benz2 = (Benz) car2;
			benz2.printPrice();
		}
	}
}
